package models;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;

import models.dados.BancoAdapter;
import models.dados.BancoTeste;
import models.dados.DAO;
import models.dados.DadoNaoEncontradoException;
import play.db.jpa.Model;

public class GerenciaPedidos extends Model {

	private DAO banco;

	public GerenciaPedidos() {
		banco = BancoAdapter.getInstancia();
	}

	public List<Pedido> listar(long numero,String usuarioCliente,String nome,GregorianCalendar DataExata,GregorianCalendar dataInicial,
			GregorianCalendar dataFinal,String status,String usuarioUltimaAlteracao,GregorianCalendar dataUltimaAteracao,String usuarioAlteracao) {
		return banco.listarPedidos(numero, usuarioCliente, nome, DataExata, dataInicial, dataFinal, status, usuarioUltimaAlteracao, dataUltimaAteracao);
	}

	public Pedido getPedido(long numero,String usuarioAdministrador) throws DadoNaoEncontradoException {
		return banco.getPedido(numero);
	}

	public void alterarPedido(long numero, String novoStatus,
			String usuarioAlteracao) throws DadoNaoEncontradoException,AcessoNegadoException {
		
		Pedido pedido = banco.getPedido(numero);
		if (!pedido.getStatus().equals(novoStatus)) {
			pedido.setStatus(novoStatus);
			pedido.setAlteradoPor(usuarioAlteracao);
			pedido.setDataUltimaAteracao(new GregorianCalendar());
			banco.alterarPedido(pedido);
		}

	}
	
	public void removerPedido(long numero, String removidoPor) throws DadoNaoEncontradoException{
		Pedido pedido = banco.getPedido(numero);
		pedido.setAlteradoPor(removidoPor);
		pedido.setRemovido(true);
		pedido.setDataUltimaAteracao(new GregorianCalendar());
		banco.removerPedido(pedido);
		
	}

}
